/*************************************************************************
> File Name: expectTheMost.cpp
> Author: icebear
> Mail: 3322366195@qq.com
> Created Time: 2024-01-14 12:55:28
> Description:
给你一个整数数组 citations ，其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。
计算并返回该研究者的 h 指数。

根据维基百科上 h 指数的定义：h 代表“高引用次数” ，
一名科研人员的 h 指数 是指他（她）至少发表了 h 篇论文，
并且 至少 有 h 篇论文被引用次数大于等于 h 。
如果 h 有多种可能的值，h 指数 是其中最大的那个。
************************************************************************/

// 思路：
// 假设指数初始为0,每篇论文引用次数超过index则指数加1，
// 要递减排序,防止数组前方有小数据被计数

#include <vector>
#include <functional>
#include <algorithm>
using namespace std;


class Solution
{
public:
    int hIndex(vector<int> &citations)
    {
        sort(citations.rbegin(), citations.rend());
        int length = citations.size();
        int h_index = 0;
        for (int i = 0; i < length; i++)
        {
            if (citations[i] > h_index)
            {
                h_index++;
            }
            else
            {
                return h_index;
            }
        }
        return h_index;
    }
};